﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DTO;
using DAO;
namespace QLDaiLy
{
    public partial class PhieuXuat :XtraUserControl
    {
        private string maDaiLy;
        private PhieuXuatDTO px;

        public PhieuXuatDTO Px
        {
            get { return px; }
            set { px = value; }
        }
        public string MaDaiLy
        {
            get { return maDaiLy; }
            set { maDaiLy = value; }
        }
        public static int thanhtien;
        private string MaNhanVien;
        string MaPhieuXuat;
        public PhieuXuat()
        {
            InitializeComponent();
            ThemPhieuXuat();
            LoadDanhSachTenDaiLy();
        }
        private void LoadPhieuXuat(PhieuXuatDTO px)
        {
            lookupTenDaiLy.EditValue = px.MaDaiLy;
            dateEditNgay.Text = DateTime.Now.ToString();
        }
        public PhieuXuat(PhieuXuatDTO px)
        {
            InitializeComponent();
            LoadDanhSachTenDaiLy();
            LoadPhieuXuat(px);
            ThemPhieuXuat();
        }
        public PhieuXuat(string MaNhanVien)
        {
            InitializeComponent();
            ThemPhieuXuat();
            this.MaNhanVien = MaNhanVien;
            LoadDanhSachTenDaiLy();
        }
        public void ThemPhieuXuat()
        {
            //PhieuXuatDTO dl = new PhieuXuatDTO();
            MaPhieuXuat = PhieuXuatDAO.TaoMaPhieuXuat();
            bool kq = PhieuXuatDAO.AddMaPhieuXuat(MaPhieuXuat,MaNhanVien);
            if (kq == false)
            {
                MessageBox.Show("Không thêm được mã");
                this.Dispose();
            }
        }
        private void LoadDanhSachTenDaiLy()
        {
            List<DaiLyDTO> list = new List<DaiLyDTO>();
            list = DaiLyDAO.LoadDanhSachDaiLy2();
            lookupTenDaiLy.Properties.DataSource = list;
            lookupTenDaiLy.Properties.ValueMember = "MaDaiLy";
            lookupTenDaiLy.Properties.DisplayMember = "TenDaiLy";
            DevExpress.XtraEditors.Controls.LookUpColumnInfo col;
            col = new DevExpress.XtraEditors.Controls.LookUpColumnInfo("TenDaiLy");
            col.SortOrder = DevExpress.Data.ColumnSortOrder.Ascending;
            lookupTenDaiLy.Properties.Columns.Add(col);
        }
        public void LoadDanhSachPXHIenTai()
        {
            List<ChiTietPhieuXuatDTO> list = new List<ChiTietPhieuXuatDTO>();
            list = ChiTietPhieuXuatDAO.LoadDanhSachPXHIenTai(MaPhieuXuat);
            gridHoaDonControl.DataSource = list;
        }
        private void cleanForm()
        {
            List<ChiTietPhieuXuatDTO> list = new List<ChiTietPhieuXuatDTO>();
            list = ChiTietPhieuXuatDAO.LoadDanhSachPXHIenTai(MaPhieuXuat);
            list.Clear();
            gridHoaDonControl.DataSource = list;
            txtTongTien.Text = "0";
            lookupTenDaiLy.EditValue = "Chọn";
            lookupTenDaiLy.ClosePopup();
        }
        private void btnChiTietPhieuXuat_Click(object sender, EventArgs e)
        {
            
            FormChiTietPhieuXuat frm = new FormChiTietPhieuXuat(MaPhieuXuat);
            frm.ShowDialog();
            LoadDanhSachPXHIenTai();
            txtTongTien.Text = (int.Parse(txtTongTien.Text) + thanhtien).ToString();
           
        }
        private void repositoryItemCapNhat_Click(object sender, EventArgs e)
        {
            ChiTietPhieuXuatDTO ctpx = new ChiTietPhieuXuatDTO();

            string MaChiTietPhieuXuat = gridViewHoaDon.GetRowCellValue(gridViewHoaDon.FocusedRowHandle, gridViewHoaDon.Columns["MaChiTietPhieuXuat"]).ToString();
            FormChiTietPhieuXuat frm = new FormChiTietPhieuXuat();
            FormChiTietPhieuXuat.machitietphieuxuat = MaChiTietPhieuXuat;
            FormChiTietPhieuXuat.label = "Cập Nhật";
            frm.ShowDialog();
            /*
            MessageBox.Show("Bạn muốn xoá hay không ?", "Thông báo", MessageBoxButtons.OKCancel);
            ChiTietPhieuXuatDTO ctpx = new ChiTietPhieuXuatDTO();

            ctpx.MaChiTietPhieuXuat = gridViewHoaDon.GetRowCellValue(gridViewHoaDon.FocusedRowHandle, gridViewHoaDon.Columns["MaCTPhieuXuat"]).ToString();

            bool kq = ChiTietPhieuXuatDAO.capNhatChiTietPhieuXuat(ctpx);
            if (kq)
            {
                MessageBox.Show("Cập Nhật thành công");
                LoadDanhSachPXHIenTai();
            }
            else
            {
                MessageBox.Show("thất bại");
            }
            */
        }
        private void gridViewHoaDon_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
            if (e.IsGetData)
            {
                e.Value = QLDaiLy.Properties.Resources.ThemIcon;
            }
            if (e.Column.Caption == "Xoá")
            {
                e.Value = QLDaiLy.Properties.Resources.DeleteIcon;
            }
        }
        private void btnHuy_Click(object sender, EventArgs e)
        {
            if (txtTongTien.Text != "0")
            {
                MessageBox.Show("Danh sách hoá đơn chưa được xoá ");
            }
            else
            {
                bool kqxoa = PhieuXuatDAO.deletePhieuXuat(MaPhieuXuat);
                if (kqxoa == false)
                {
                    MessageBox.Show("Có lỗi xảy ra !");
                }
                else
                {
                    if (MessageBox.Show("Bạn muốn thoát ?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        this.Dispose();
                    }

                }
            }
        }
        private void labelControl2_Click(object sender, EventArgs e)
        {

        }
        private void tbnLapHoaDon_Click(object sender, EventArgs e)
        {

            if (lookupTenDaiLy.EditValue != null && dateEditNgay.EditValue != null)
            {
                PhieuXuatDTO px = new PhieuXuatDTO();
                px.MaPhieuXuat = MaPhieuXuat;
                px.MaNhanVien = MaNhanVien;
                px.TongGiaTri = int.Parse(txtTongTien.Text);
                px.NgayLapPhieu = dateEditNgay.Text;
                px.MaDaiLy = lookupTenDaiLy.EditValue.ToString();
                DataTable dt = LoaiDaiLyDAO.LayTienNo(px.MaDaiLy);
                DataTable listDaily = DaiLyDAO.NoCuaDaiLy(px.MaDaiLy);
                int NoToiDaTheoLoai = int.Parse(dt.Rows[0][0].ToString());
                int NoCuaDaiLy = int.Parse(listDaily.Rows[0][0].ToString());
                int tongtienseno = px.TongGiaTri + NoCuaDaiLy;
                if (tongtienseno <= NoToiDaTheoLoai)
                {
                    bool cnno = DaiLyDAO.CapNhatNoCuaDaiLy(px.MaDaiLy, tongtienseno);
                    if (cnno == false)
                    {
                        MessageBox.Show("tiền nợ chưa được cập nhật");
                    }
                    bool kq = PhieuXuatDAO.CapNhatPhieuXuat(px);
                    if (kq)
                    {
                        MessageBox.Show("Phiếu xuất vừa được thêm");
                        cleanForm();
                        ThemPhieuXuat();
                    }
                    else
                    {
                        MessageBox.Show("Phiếu xuất Không thêm được");
                    }
                }
                else
                {
                    MessageBox.Show("Số tiền nợ vượt quá qui định theo loai đại lý ");
                }
            }
            else
            {
                MessageBox.Show("Chưa chọn đại lý hoặc ngày ");
            }
        }
        private void repositoryItemXoa_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Bạn muốn xoá hay không ?", "Thông báo", MessageBoxButtons.OKCancel);

            string MaChiTietPhieuXuat = gridViewHoaDon.GetRowCellValue(gridViewHoaDon.FocusedRowHandle, gridViewHoaDon.Columns["MaChiTietPhieuXuat"]).ToString();
            string ThanhTien = gridViewHoaDon.GetRowCellValue(gridViewHoaDon.FocusedRowHandle, gridViewHoaDon.Columns["ThanhTien"]).ToString();
            bool kq = ChiTietPhieuXuatDAO.deleteChiTietPhieuXuat(MaChiTietPhieuXuat);
            if (kq)
            {
                MessageBox.Show("Xoá thành công");
                txtTongTien.Text = (int.Parse(txtTongTien.Text) - int.Parse(ThanhTien)).ToString();
                LoadDanhSachPXHIenTai();
            }
            else
            {
                MessageBox.Show("Xoá thất bại");
            }
        }
        private void btnHuyDanhSach_Click(object sender, EventArgs e)
        {

            bool kq = ChiTietPhieuXuatDAO.deleteListCTPX(MaPhieuXuat);
            if (kq)
            {
                bool kqxoa = PhieuXuatDAO.deletePhieuXuat(MaPhieuXuat);
                if (kqxoa == true)
                {
                    MessageBox.Show("Huỷ thành công");
                    cleanForm();
                }
                else
                {
                    MessageBox.Show("Huỷ thất bại");
                }
            }
            else
            {
                MessageBox.Show("Huỷ thất bại");
            }
         
        }

        private void PhieuXuat_Leave(object sender, EventArgs e)
        {
            bool kqxoa = PhieuXuatDAO.deletePhieuXuat();
            if (kqxoa == false)
            {
                MessageBox.Show("Không xó được phiếu xuất rỗng");
            }
        }

        private void gridViewHoaDon_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            if (e.Column == STT)
            {
                e.DisplayText = Convert.ToString(e.RowHandle + 1);
            }
        }
       
    }
}
